1. Field of the Invention.
The present invention relates to data processing systems and, in particular, to the architecture of a high performance, 32-bit microprocessor that includes an integrated instruction pipeline, memory management unit, instruction and data caches and bus interface unit.
2. Discussion of the Prior Art
All computer systems perform the same basic functions: input of information, storage of information, computational operations, control of operations and output of information.
Input devices are used to supply the information needed for computational operations and for telling the computer how to operate on the information.
Storage units contain both the information required for performing computations as well as intermediate data and computational results. The storage units also contain the instructions, i.e., the computer programs, which tell the computer what to do with the stored information.
The computational portion of a computer performs the actual arithmetic or logical tasks as directed by the program instructions.
The control unit administers the operation of the computer. It retrieves information, i.e. data and instructions, from the storage unit and decides how and when to perform operations on that information. It monitors the operation of each of the other units, recognizes when a task is completed and then tells each unit what to do next.
All computer systems, from large, high-powered mainframe supercomputers to basic personal computers, conform to the basic architecture described above. The difference between computer systems lies in the size of the particular building blocks, the "power" of the individual building blocks to perform their respective tasks, and the speed with which information can be received and transmitted by the system and, particularly, can be transferred among the building blocks within the system.
Microprocessors are computers which are implemented using semiconductor integrated circuits. Each semiconductor chip in a conventional microprocessor computing cluster constitutes one of the basic building blocks described above. Thus, a microprocessor provides the advantages common to all integrated circuit devices, namely, reduced physical size and increased speed for computing power corresponding to non-integrated systems of comparable computational and storage complexity.
It would be desirable to have available a microprocessor which integrates all of the basic building blocks on a single semiconductor chip.
However, while integrating these functions on a single microprocessor chip would significantly improve access time to memory, a major computer performance factor, certain potential problems and disadvantages must be addressed in the process. First, on-chip memory space is small compared to available system memory. Second, integrated memory organization is fixed, compared to flexible memory organization at the system level; this fixed organization can potentially restrict the application of the microprocessor. Third, an efficient microprocessor chip architecture provides for a limited number of access ports, thereby limiting external control capability and data band width. In addition, due to their small size, on-chip memories have a significant "miss" ratio; that is, often requested information is not found in the on-chip memory. It is required, therefore, that memory access be optimized both for on-chip memory "hits" and "misses". This becomes more difficult when the on-chip memory is physical (as compared to virtual) because data may be read from or written to the memory only after the virtual address is translated to a corresponding physical address by a memory management unit. This is further complicated for a microprocessor which utilizes pipelined instruction processing because memory access may be initiated simultaneously by multiple units, all of which require the services of the single memory management unit. Having a deep instruction execution pipeline also introduces a considerable (pipe break) penalty for execution of instructions that are non-sequential.
It is believed that a discussion of "virtual memory" would be helpful in understanding the present invention.
Just as work expands to fill the time available, so computer programs tend to expand over their lifetime to fill the physical memory available to them. Once the memory limits have been reached, further expansion of the program is difficult and error prone, usually requiring hard-to-manage overlays. The ideal solution to this problem is to give the program a virtually infinite (limitless) memory. A program in an infinite memory can be enlarged without bumping into any barriers. Unfortunately, memory costs usually preclude enormous physical memories With "virtual memory" the programmer is provided with the functional equivalent of a very large memory at minimal cost.
Virtual memory is a mechanism for circumventing the limits on physical memory size. Under a virtual memory system, it appears to users as if the entire logical address space were available for storage. But, in fact, at any given time only a few pages of the logical address space are mapped onto physical space. The other pages are not present in main memory at all; instead, the information in these pages is stored on a secondary storage device, such as a disk, the cost-per-bit of which is much lower.
In a virtual memory system, whenever the computer generates a memory address, the hardware checks whether that address lies in a page in memory. If it does, the address is translated to the appropriate physical address and the memory reference takes place normally. If the indicated page is not in memory, an operation called a page swap is performed and the operating system software loads the missing page from disk. If this operation is performed swiftly, the user has the illusion of a gigantic physical memory. For efficiency, when the referenced location has to be brought from the peripheral to the main memory, other locations likely to be referenced next are also brought in. Information not currently in use is removed form the main memory and returned to peripheral storage, thus making room for new pages.
The beauty of virtual memory is that the user or programmer does not have to be aware of the process. The programmer uses one consistent set of addresses called virtual addresses. The memory management hardware keeps track of where the information resides at any given time and translates the virtual address into a real location in physical memory. When the CPU finds the requested virtual address to be unavailable in main memory, it notifies the operating system, which initiates a page swap.